"""
编写一个名为 printTable()的函数，它接受字符串的列表的列表，将它显示在组
织良好的表格中，每列右对齐。假定所有内层列表都包含同样数目的字符串。例如， 该值可能看起来像这样：
tableData = [['apples', 'oranges', 'cherries', 'banana'],
 ['Alice', 'Bob', 'Carol', 'David'],
 ['dogs', 'cats', 'moose', 'goose']]
你的 printTable()函数将打印出：
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
"""

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

# 创建一个列表，记录每行最长字符串的长度
colWidths = [0] * len(tableData)

# 第一个双层循环给colWidths赋值
for i in range(len(tableData)):
    for j in range(len(tableData[i])):
        if int(colWidths[i]) < len(tableData[i][j]):
            colWidths[i] = len(tableData[i][j])

# 注释的代码实现的功能与上面一样
'''
for i in range(len(tableData[0])):
    for j in range(len(tableData)):
        if int(colWidths[j]) < len(tableData[j][i]):
            colWidths[j] = len(tableData[j][i])
'''

# 第二个双层循环实现格式化打印
for i in range(len(tableData[0])):
    for j in range(len(tableData)):
        print(tableData[j][i].ljust(colWidths[j]+3, " "), end="")
    print()

